<html>
<body>
<p>Test EventSource attribute listener functionality. Should print a series of PASS messages followed by DONE.</p>
<div id="result"></div>
<script>
function log(msg) {
    document.getElementById("result").innerHTML += msg + "<br>";
}

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

var es = new EventSource("eventsource");

if (es.onopen == null && es.onmessage == null && es.onerror == null)
    log("PASS: attribute listeners are initially null");
else
    log("FAIL: attribute listeners are not null initially");

var a = function () {};
es.onopen = a;
if (es.onopen == a)
    log("PASS: setting and getting attribute listener works");
else
    log("FAIL: setting/getting attribute listener does not work");

var b = function () {};
es.onopen = b;
if (es.onopen == b)
    log("PASS: resetting attribute listener works");
else
    log("FAIL: resetting attribute listener does not work");

var flag = false;
es.onmessage = function (e) { flag = (e.data == "hello"); };
var evt = document.createEvent("MessageEvent");
evt.initMessageEvent("message", false, false, "hello", undefined, undefined, undefined, undefined);
es.dispatchEvent(evt);
if (flag) {
    log("PASS: dispatching event on an EventSource triggers attribute listener");
    log("DONE");
}
else
    log("FAIL: dispatching event on an EventSource does not trigger attribute listener");

if (window.testRunner)
    testRunner.notifyDone();

</script>
</body>
</html>
